MODULE_NAME='IR DVD'
(
	Dev dvDVD,
	Dev vdvDVD,
	Dev daTPs[]
)
(***********************************************************)
(***********************************************************)
(*  FILE_LAST_MODIFIED_ON: 04/04/2006  AT: 11:33:16        *)
(***********************************************************)
(* System Type : NetLinx                                   *)
(***********************************************************)
(* REV HISTORY:                                            *)
(***********************************************************)
(*
    $History: $
*)    
(***********************************************************)
(*          DEVICE NUMBER DEFINITIONS GO BELOW             *)
(***********************************************************)
DEFINE_DEVICE

(***********************************************************)
(*               CONSTANT DEFINITIONS GO BELOW             *)
(***********************************************************)
DEFINE_CONSTANT

(***********************************************************)
(*              DATA TYPE DEFINITIONS GO BELOW             *)
(***********************************************************)
DEFINE_TYPE

(***********************************************************)
(*               VARIABLE DEFINITIONS GO BELOW             *)
(***********************************************************)
DEFINE_VARIABLE
Volatile Integer nDVDBtns[] =
{
    999, // On
    999, // Off
    215, // Play
    216, // Stop
    217, // Pause
    228, // Next
    229, // Previous
    218, // FFwd
    219, // Reverse
    200, // 0
    201, // 1
    202, // 2
    203, // 3
    204, // 4
    205, // 5
    206, // 6
    207, // 7
    208, // 8
    209, // 9
    210, // 10+
    251, // Up
    252, // Down
    253, // Left
    254, // Right
    255, // Select
    999, // Top Menu
    999, // DVD Menu
    999, // Setup Menu
    261, // Popup Menu
    266, // Subtitle
    263, // Audio
    270, // Angle
    999, // Repeat
    999, // Shuffle
    262, // Clear
    999, // Open/Close
    999, // Display
    238, // Red
    239, // Green
    240, // Yellow
    241, // Blue
    235, // Home
    236, // Options
    304  // Return
}

Volatile Integer nDVDIR[] =
{
    27, // On
    28, // Off
    1,  // Play
    2,  // Stop
    3,  // Pause
    4,  // Next
    5,  // Previous
    6,  // FFwd
    7,  // Reverse
    10, // 0
    11, // 1
    12, // 2
    13, // 3
    14, // 4
    15, // 5
    16, // 6
    17, // 7
    18, // 8
    19, // 9
    20, // 10+
    45, // Up
    46, // Down
    47, // Left
    48, // Right
    49, // Select
    65, // Top Menu
    44, // DVD Menu
    84, // Setup Menu
    116,// Popup Menu
    57, // Subtitle
    89, // Audio
    55, // Angle
    43, // Repeat
    99, // Shuffle
    53, // Clear
    80, // Open/Close
    58, // Display
    112,// Red
    113,// Green
    115,// Yellow
    114,// Blue
    119,// Home
    118,// Options
    54  // Return
}
(***********************************************************)
(*               LATCHING DEFINITIONS GO BELOW             *)
(***********************************************************)
DEFINE_LATCHING

(***********************************************************)
(*       MUTUALLY EXCLUSIVE DEFINITIONS GO BELOW           *)
(***********************************************************)
DEFINE_MUTUALLY_EXCLUSIVE

(***********************************************************)
(*        SUBROUTINE/FUNCTION DEFINITIONS GO BELOW         *)
(***********************************************************)
(* EXAMPLE: DEFINE_FUNCTION <RETURN_TYPE> <NAME> (<PARAMETERS>) *)
(* EXAMPLE: DEFINE_CALL '<NAME>' (<PARAMETERS>) *)

Define_Call 'PULSE_IR' (DEV dvDEV, INTEGER nCHAN)
{
  Send_Command dvDev,"'SP',nChan"
}

(***********************************************************)
(*                STARTUP CODE GOES BELOW                  *)
(***********************************************************)
DEFINE_START

(***********************************************************)
(*                THE EVENTS GO BELOW                      *)
(***********************************************************)
DEFINE_EVENT

Channel_Event[vdvDVD,1]
{
    On:
    {
	Send_String 0,"'DVD ',Itoa(dvDVD.Number),':',Itoa(dvDVD.Port),':',Itoa(dvDVD.System),' Rebuilding Events'"
	Rebuild_Event()
    }
}

Button_Event[daTPs, nDVDBtns]
{
    Push:
    {
	Call 'PULSE_IR' (dvDVD, nDVDIR[Get_Last(nDVDBtns)])
    }
    Hold[5,Repeat]:
    {
	Call 'PULSE_IR' (dvDVD, nDVDIR[Get_Last(nDVDBtns)])
    }
}

(***********************************************************)
(*            THE ACTUAL PROGRAM GOES BELOW                *)
(***********************************************************)
DEFINE_PROGRAM

(***********************************************************)
(*                     END OF PROGRAM                      *)
(*        DO NOT PUT ANY CODE BELOW THIS COMMENT           *)
(***********************************************************)
